#include "apue.h"

// fwrite 的内部逻辑简化：
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream) {
    // 1. 将数据复制到FILE结构体的缓冲区
    memcpy(stream->buffer + stream->pos, ptr, total_size);
    stream->pos += total_size;
    
    // 2. 如果缓冲区未满，直接返回"成功"
    if (stream->pos < stream->buf_size) {
        return nmemb;  // 返回完整的写入数量
    }
    
    // 3. 缓冲区满时才真正调用write系统调用
    // 此时才会触发SIGPIPE！
}

// 实际的写入发生在缓冲区刷新时
int write(int fd, const void *buf, size_t count) {
    // 内核发现管道读端已关闭
    // 向进程发送SIGPIPE信号
    // 返回-1，设置errno=EPIPE
}


